package co.edu.udea.herbario.dao;

import co.edu.udea.herbario.dto.Genero;
import java.util.List;

/**
 *Clase de tipo interface que contiene la declaracion de los metodos utilizados para gestionar
 * los datos de la tabla Herb_Generos entre la persistencia y la logica de la aplicacion
 *
 * @author Alejandro Areiza, Lorena Orozco, Marcela Colorado
 */
public interface GeneroDao
{
    /**
	 * Metodo que obtiene desde la tabla Herb_Generos el elemento referenciado con el codigo indicado
	 * como parametro
	 *
	 * @param codigo es el codigo que identifica al genero dentro del sistema
	 *
	 * @return retorna un objeto de tipo Genero
	 */
	public Genero obtenerGenero(int codigo);

    /**
	 * Metodo para obtener de la tabla Herb_Generos el registro que corresponde al nombre del genero
	 * especificado como parametro
	 *
	 * @param gene es el nombre del genero
	 *
	 * @return retorna un objeto de tipo Genero
	 */
	public Genero obtenerGeneroPorNombre(String gene);

    /**
	 * Este metodo es el encargado de entregar en una lista los nombres de todos los generos registrados
     * en el sistema
     *
     * @param valor contiene los caracteres de busqueda
	 *
	 * @return retorna una lista con los nombres de los generos
	 */
    public List<String> obtenerNombresGeneros(String valor);

    /**
	 * Metodo para crear un elemento dentro de la tabla Herb_Generos
	 *
	 * @param genero es un objeto de tipo Genero que contiene los datos del elemento que se desea
	 * ingresar en la tabla Herb_Generos
	 *
	 * @return retorna un entero: res = 1 si se realizo correctamente la creacion, de lo contrario res = -1
	 */
	public int crearGenero(Genero genero);

    /**
	 * Metodo para llevar a cabo el proceso de modificacion de los datos asociados a un genero
	 *
	 * @param genero es un objeto de tipo Genero que contiene los datos del elemento que se desea
	 * modificar en la tabla Herb_Generos
	 *
	 * @return retorna un entero: res = 1 si se realizo correctamente la modificacion, de lo contrario res = -1
	 */
    public int actualizarGenero(Genero genero);
}
